让大学介入工业的传统,应该始于1930年代斯坦福大学。当时斯坦福的教务长特纳锐意改革,认为让大学的科研成果尽快转化为产品也是大学的职能之一——惠普就是这项改革的直接成果。大学教授直接利用科研成果办公司,还是在1980年代美国国会通过拜—多尔法案之后。拜—多尔法案容许大学灵活处置受联邦政府资助的科研项目产生的知识产权。斯坦福大学授权了8000项专利,为大学带来了13亿美元的收入。中国论文网 http://www.xzbu.com/2/view-3624854.htm
硅谷只有两所顶级大学,斯坦福和加州大学伯克利分校。另外,位于旧金山城区的加州大学旧金山分校是一所顶级的医学院,只培养生物医学的研究生。拜—多尔法案的最早受益者就是加州大学旧金山分校的教授波义尔,他创办的公司就是现在大名鼎鼎的生物制药公司基因泰克。从创办公司的数量上说,斯坦福大学要高于其它学校。一方面,斯坦福确实是高校成果技术转移的先驱;另一方面,斯坦福位于硅谷的中心,在人才、资金、法律服务等商业基础设施上,都有得天独厚的优势。
伟大的创业者
斯坦福大学的现任校长汉内西就是一位创业者。他于1977年加入斯坦福大学,担任电机系和计算机系的教授,在赖斯卸任教务长赴职小布什的国务卿时,他接任教务长,后担任校长。汉内西是计算机系统机构的专家,也是1980年代计算机行业RISC运动的主要推手之一。他在1984年创办了计算机芯片公司MIPS,MIPS后来在NASDAQ上市,为汉内西带来了财富。
大卫·谢瑞顿也是斯坦福大学计算机系的教授。他早年最出名的研究工作是W系统,继W系统之后,就是1980年代计算机界的革命性产品之一X—Window,而微软的Windows界面架构,基本来源于X—Window。谢瑞顿连续创办了几家计算机网络公司,有人开玩笑说,每逢谢瑞顿有休假年,他肯定又要开一家公司。他的这些公司虽没有上市,但都先后卖给思科等大公司,这为他带来了大笔财富。1998年,两个计算机系的研究生退学去开公司,找他做天使投资人,他二话不说,给他们写了一张10万美金的支票。六年后,他的投资产生了超过1000倍的回报,那家公司叫Google。
吉姆·克拉克在创办著名的图形工作站公司SGI之前,是斯坦福大学电机系的教授。SGI为他带来了第一桶金,随后他又和马克·安德森联手创办了网景(Netscape)公司,开启了第一轮互联网革命。他随后又陆续创办、投资了无数公司,财富不断累积,以至于最后他为了避税,放弃美国国籍。虽然他不愿缴税,但他在慈善事业上从不吝啬。他曾经为斯坦福大学捐款1.5亿资助大学的生物科学研究。他的花边绯闻不断,2009年,他65岁时,迎娶比他年轻36岁的澳大利亚模特,还生了个女儿。
海湾对面的伯克利也出产了不少伟大的技术创业者。最有名的应该是迈克·斯通布瑞克。他是数据库的理论家也是实践者。他的所有理论都体现在他的产品里,每有新成果,他都会办一家公司去产业化他的成果。他先后创办了Ingres、Illustra等数据库公司。这些公司或上市或并购。他的所有公司见证了整个数据库产业的发展史,他也是软件的社会主义运动——“开源”的支持者,他自己的产品Postgres等就是开源的,任何人都可以拿到这些产品的源代码。他2000年从伯克利转往东海岸的麻省理工任教,现在68岁高龄,还活跃在研究和创业的第一线。
Coursera是一家致力于在线教育的公司,创始人是计算机系教授Andrew Ng。Ng是机器学习领域的牛人,Coursera一开始就得到硅谷最受尊重的VC公司KP的合伙人约翰多尔主导的投资,第一轮1600万美元足可以使公司起飞。Coursera同时提供上百门课程,都是名师授课,目前还不收费。大家对Coursera已开始拥有一种超出了对一家普通商业公司的期望,因为,如果这家公司真能成功实现自己的愿景,若干年后,人类持续了千年的教育方式也许会被颠覆,人们可以更方便、更廉价地得到最好的教育。
大学教授创办公司并非硅谷专利,东海岸的大学也不时有成功案例。卡内基·梅隆大学的计算机学科应该是全美最好的。华人教授张辉是计算机网络的顶级专家,他多次创业,屡获成功。他最新的公司Conviva致力于网络视频优化,但这次他选择了硅谷作为公司的诞生地,因为这里有得天独厚的创业环境。
争议与反思
如果说拜—多尔法案是大学灵活处置联邦政府资助项目的知识产权的法律依据,那么美国大学的教授带薪休假制度为教授创业提供了便利。一般美国的大学,每五到七年都会容许教授带薪休假一年。而许多文理学院的间隔更短,三到四年就可有一年休假,因为文理学院的主要职能是授课而不是研究,并且没有助教,所有事情都是教授亲力亲为,这给文理学院的教授带来额外的负担。美国的教授,同中国教授一样也不是全能的天才,一般他们的强项都是技术,在创办公司时,他们利用一年的休假期,开发技术,搭建团队,寻找启动资金。休假年结束后,都会有职业经理人继续打理公司的业务,而教授们回到学校后,会在公司里继续兼职做个首席技术官或首席科学家,把握技术方向。这个模式值得中国的高校和研究机构学习。更值得中国教授学习的地方是,该放手时就放手:自己的强项是学术和技术,当公司成长到一定阶段时,可以引入资金和职业团队,自己则回归学校做自己擅长的事情。霸住所有事情的做法,是农耕时代遗留的恶习,这种做法不适合新型高科技企业,既不利人,也不利己。
大学教授创业也不是没有异议。很多精英认为,长此以往,会让社会上的浮躁之气侵入大学,弱化大学的教化功能。斯坦福的校长汉内西是Google的董事,而Google的员工中有高达5%的员工是斯坦福大学的毕业生。斯坦福和硅谷的很多公司形成了你中有我、我中有你的现象。很多人质疑斯坦福大学是不是和硅谷走得太近了,一位斯坦福的历史系教授甚至质问汉内西,是否应该从Google董事会退出。一手将汉内西推上校长职位的斯坦福前校长卡斯玻也难掩自己的担心:一所顶级的研究型大学,会不会因此变得短视,更加以结果为导向,培养出来的学生会不会都变成功利主义者;计算机系和电机系的教授,本身的工资水准就在学校里名列前茅,他们的商业机会又远高于其它院系,这在学校里是否会导致两极分化?
饱汉不知饿汉饥,斯坦福人的反思在外人看起来有些过虑,纽约市长布隆伯就企图将硅谷这种产学研一体化的模式拷贝到纽约,他促使纽约市政府圈地拨款,建立两所现代化的大学,并引入硅谷的创业家和风险投资家入驻。除纽约市,波士顿128公路和北卡罗来那州的研究三角(以北卡罗来那大学,北卡罗来那州立大学和杜克大学形成的三角地带命名),都在奋起直追硅谷。其实无论远近,斯坦福大学和伯克利都已经是硅谷的一部分。
2017年10月18日星期三
2017年10月4日星期三
HV的结构与原理–EDMOS or LDMOS?
普通的LV器件,结构比较简单。源(S)、栅(G)、漏(D)和衬底(B)四个端子,配合LDD和Spacer防止短沟道效应,差不多就可以讲完了。然而,这些普通的器件只能撑比较低的电压,比如1.8V/3.3V/5V(取决于你的technology-node)。而到了高电压驱动的时候,我们的结构必须要有所改变才能满足高压需求。
在讲结构之前,先讲简单的原理,也是便于理解后面的结构吧。我们知道MOS的击穿电压是在Drain加高电压,其他三端接地,直到击穿(@1uA)为止,所以它可能有三个通道:to Source,to Gate, to Substrate。通常到衬底的PN结雪崩击穿是我们想要的,而到源极的穿通(punch)和栅极的栅氧击穿都需要尽量避免。
在LV时代,我们可以通过增加Anti-punch Through implant或者增加沟道长度来防止穿通,而在高压时代那点沟道长度根本不够PN结耗尽宽度延伸,所以靠沟道调整根本无济于事,所以必须要使得电压在到达沟道的时候已经很低了,所以必须要有一个漂移区(Drift region),而且这个漂移区也同时拉长了Drain到Gate末端的距离,使得Drain到Gate击穿电压提高,这样就解决了两个端子了,还有一个衬底的PN结击穿,这个从比较简单的PN结理论就可以得到,提高PN结雪崩击穿电压就需要降低PN结两边的掺杂浓度,所以一般会有HV-Well以及DDD-implant (Drift drain or Graded-drain),而这样组成的device就是最早期的DDDMOS(结构如下图)。
然而这样的DDDMOS最致命的弱点是Isub的double peak问题,我们传统的LVNMOS的Isub-Vg都是只有一个peak,而在DDDMOS结构中将传统的LDD换成了DDD结构(Graded Drain)包围了N+,所以会有一个经典的问题就是Isub double peak问题(如图),根据US专利描述(US6963109-B2),如果为了提高Drain端PN结击穿电压,所以需要降低DDD的浓度,可是有出现了Isub两个峰值的问题,虽然第一个峰值较传统的Isub降低了,可是当Vg升高时,第二个峰值比原来更高了,也就是说在high Vg的时候Isub过高,所以在high Vg的时候反而BV撑不上去。所以这也是个Low Vg和High-Vg下BV的trade-off的问题。其实这个就是经典的"Kirk-Effect",造成double peak的主要原因就是随着Vg的升高,栅极控制的沟道内强电场移动到沟道外的N+边缘导致的。(不过我曾经看过2008年一期半导体学报,说是不是强电场移动,而是N+边缘又出现了一个强电场区与沟道强电场并存,称之为双强电场模型。)
正是由于DDDMOS有kirk-effect的致命问题,所以它的应用非常窄,理论上限制在20~30V以下,实际上一般在18V以下的Application才会用,而到了20V以上几乎都要用新的结构,也就是LDMOS(Lateral Diffused MOS)了。那么LDMOS做了什么改变可以撑高压呢?
1、场板(Field Plate):由于上面讲到的栅极末端电场的影响,导致沟道末端的漂移区表面电场收敛集中在poly edge,所以很容易在此处发生击穿,于是在Poly edge下面垫一个FOX/STI的Oxide,这就是场板结构。
这样的结构就会使得耗尽区表面电场比较分散,有利于提高耗尽区宽度,所以提高了击穿电压,并且进一步抑制了Kirk-Effect导致的末端电场峰值向N+边缘的移动,所以Isub的双峰效应会得到控制。所以改变场板长度可以改变Isub的performance,根据实验和仿真结果看,当增加场板长度时,可以分散靠近栅氧一端的较大电场,进而降低靠近栅氧端以及场板下面的碰撞电离。但是一味的增大会导致漏端区域的电场增加带来的碰撞电离几率的增加,这是因为等势线开始往漏端弯曲导致,当然你也可以把整个FOX拉长,提高漂移区长度,但是牺牲的是Rdson。所以还是Trade-off。
所以场板(field plate)最直接的就是对表面电场的影响带来的碰撞几率变化,而进而影响到Isub的performance。最后来一张我曾经做过的实际的场板尺寸以及漂移区长度对Isub的correlation吧。
2、RESURF(REduced SURface Field):这个应该算是HV器件(LDMOS)比较经典的东西了,真正可以balance BV和Rdson了,鱼和熊掌兼得了。
先看下结构吧,它一定要满足两个PN结的结构,一个横向的P+/N-EPI和一个纵向的N-EPI/P-SUB。
如果没有RESURF,单纯看上图,在P+和N+两端加高电压的话,我们认为BV一定发生在第一个横向的PN结那里(如下图)。这应该比较好理解,只有它是反偏的,所以电场都是加在了这个反偏的PN结耗尽区两边直到雪崩击穿。
然而,由于衬底是P-,而漂移区是N-,所以P-和N-都是低掺杂,所以耗尽区宽度很宽,那么如果我控制N-的EPI厚度或者控制P-/N-的junction两边的浓度,使得N-那边的耗尽区延伸到Si表面,那么P+/N-的横向PN结的耗尽区是不是自动就被拉到了N+/N-边缘了?所以P+/N-的电场是不是就被拉低了?BV自然就升上去了。---太有才了!
3、Guard-Ring(保护环):这个以后再说吧!
最后再来说一个LDMOS在应用上的主要考虑点,安全工作区(SOA:Safe Operation Area)。尤其在BCD的工艺中,除了常规的BV和Rsp(specific on-resistance)在性能上的追求之外,这个几乎是致命的选择,因为它直接决定了器件的可靠性。所以每家FAB提供的BCD的手册里面必须很明确规定每个LDMOS的SOA范围对应的寿命供客户选择。(BV,Rsp,SOA几乎是BCD设计选择的金三角理论)
什么是SOA?它主要定义漏源之间最大电压和最大电流的极限以满足安全工作的功率范围,典型图如下:
1、Resistance:这就是Rdson了。
2、最大电流:这就是Idsat;
3、最大电压:这就是BV;
4、最大功率:这就是电压和电流的积分了,也就是功率。但是它是在normal switch下并且考虑了self-heat效应的。上图中“4”的最大功率有好几条线,主要取决于你所加的功率持续的时间是多久,因为heating累积导致的decade是不一样的,取决于你的Pulse Width。先给一张图说明一下经过heating累积后I-V曲线decade的状况,下图可以看出随着stress时间的延长,Isat是在衰退的。
接下来,我们研究一下如何评估这个SOA?主要依靠一个叫做TLP(Transmission Line Pulse)的测试来评估LDMOS寄生的BJT trigger Snap-Back的条件(Snap-back原理请参阅我前面讲的章节)。影响SOA功率极限有两个Factor,一个是雪崩击穿的电流,一个是Self-heating的电流。一般的功率MOSFET主要问题来自于Self-heating带来的thermal instability,温度越高晶格散射越厉害导致载流子迁移率下降,所以Isat是在下降的。所以此时我们的SOA的功率极限应该由self-heating的因素被dominate了。所以如果我们要提高我们的pulse width (100ns or 100ms),也就是需要延长我们的self-heating,所以功率极限自然要降低,所以上图中“4”的功率极限的那条线需要往里挪位置了,尤其是在大面积的Power MOSFET,这个更应该需要考虑。
在实际的制程里面,比较难的地方在于,Drain和Source以及Bulk的电阻都是正温度系数,而Drain和Source电阻升高对于雪崩击穿是好事。但是Bulk电阻如果也跟着升高呢?那么它就很容易trigger Bulk-Source的PN结正向导通,导致寄生的BJT开启而发生Snap-back,所以雪崩击穿和寄生的BJT的Snap-back又是和温度的折衷平衡了。
好吧,Power MOSFET就讲到这里吧,随着低功耗要求的越来越苛刻,PMIC依然很火,而PMIC的精髓就在于BV、Rsp、SOA三者之间的折衷选择,如何得到三者的最佳才是业界最强。
2017年8月27日星期日
14款GitHub最流行的开源机器学习项目:TensorFlow排榜首
现在机器学习逐渐成为行业热门,经过二十几年的发展,机器学习目前也有了十分广泛的应用,如:数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、DNA序列测序、语音和手写识别、战略游戏和机器人等方面。
本文列举了目前GitHub上最受欢迎的14款开源的机器学习项目,以供开发者参考使用。
本文列举了目前GitHub上最受欢迎的14款开源的机器学习项目,以供开发者参考使用。
1. TensorFlow
TensorFlow 是谷歌发布的第二代机器学习系统。据谷歌宣称,在部分基准测试中,TensorFlow的处理速度比第一代的DistBelief加快了2倍之多。
具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点( Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种灵活的架构可以让使用者在多样化的将计算部署在台式机、服务器或者移动设备的一个或多个CPU上,而且无需重写代码;同时任一基于梯度的机器学习算法均可够借鉴TensorFlow的自动分化(Auto-differentiation);此外通过灵活的Python接口,要在TensorFlow中表达想法也变得更为简单。
TensorFlow最初由Google Brain小组(该小组隶属于Google's Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。但该系统的通用性足以使其广泛用于其他计算领域。
目前Google 内部已在大量使用 AI 技术,包括 Google App 的语音识别、Gmail 的自动回复功能、Google Photos 的图片搜索等都在使用 TensorFlow 。
具体的讲,TensorFlow是一个利用数据流图(Data Flow Graphs)进行数值计算的开源软件库:图中的节点( Nodes)代表数学运算操作,同时图中的边(Edges)表示节点之间相互流通的多维数组,即张量(Tensors)。这种灵活的架构可以让使用者在多样化的将计算部署在台式机、服务器或者移动设备的一个或多个CPU上,而且无需重写代码;同时任一基于梯度的机器学习算法均可够借鉴TensorFlow的自动分化(Auto-differentiation);此外通过灵活的Python接口,要在TensorFlow中表达想法也变得更为简单。
TensorFlow最初由Google Brain小组(该小组隶属于Google's Machine Intelligence研究机构)的研究员和工程师开发出来的,开发目的是用于进行机器学习和深度神经网络的研究。但该系统的通用性足以使其广泛用于其他计算领域。
目前Google 内部已在大量使用 AI 技术,包括 Google App 的语音识别、Gmail 的自动回复功能、Google Photos 的图片搜索等都在使用 TensorFlow 。
开发语言:C++
许可协议:Apache License 2.0
GitHub项目地址:https://github.com/tensorflow/tensorflow
2. Scikit-Learn
Scikit-Learn是用于机器学习的Python 模块,它建立在SciPy之上。该项目由David Cournapeau 于2007年创立,当时项目名为Google Summer of Code,自此之后,众多志愿者都为此做出了贡献。
主要特点:
主要特点:
- 操作简单、高效的数据挖掘和数据分析
- 无访问限制,在任何情况下可重新使用
- 建立在NumPy、SciPy 和 matplotlib基础上
Scikit-Learn的基本功能主要被分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理,具体可以参考官方网站上的文档。经过测试,Scikit-Learn可在 Python 2.6、Python 2.7 和 Python 3.5上运行。除此之外,它也应该可在Python 3.3和Python 3.4上运行。
注:Scikit-Learn以前被称为Scikits.Learn。
注:Scikit-Learn以前被称为Scikits.Learn。
开发语言:Python
许可协议:3-Clause BSD license
GitHub项目地址: https://github.com/scikit-learn/scikit-learn
3.Caffe
Caffe 是由神经网络中的表达式、速度、及模块化产生的深度学习框架。后来它通过伯克利视觉与学习中心((BVLC)和社区参与者的贡献,得以发展形成了以一个伯克利主导,然后加之Github和Caffe-users邮件所组成的一个比较松散和自由的社区。
Caffe是一个基于C++/CUDA架构框架,开发者能够利用它自由的组织网络,目前支持卷积神经网络和全连接神经网络(人工神经网络)。在Linux上,C++可以通过命令行来操作接口,对于MATLAB、Python也有专门的接口,运算上支持CPU和GPU直接无缝切换。
Caffe是一个基于C++/CUDA架构框架,开发者能够利用它自由的组织网络,目前支持卷积神经网络和全连接神经网络(人工神经网络)。在Linux上,C++可以通过命令行来操作接口,对于MATLAB、Python也有专门的接口,运算上支持CPU和GPU直接无缝切换。
Caffe的特点
- 易用性:Caffe的模型与相应优化都是以文本形式而非代码形式给出, Caffe给出了模型的定义、最优化设置以及预训练的权重,方便快速使用;
- 速度快:能够运行最棒的模型与海量的数据;
- Caffe可与cuDNN结合使用,可用于测试AlexNet模型,在K40上处理一张图片只需要1.17ms;
- 模块化:便于扩展到新的任务和设置上;
- 使用者可通过Caffe提供的各层类型来定义自己的模型;
目前Caffe应用实践主要有数据整理、设计网络结构、训练结果、基于现有训练模型,使用Caffe直接识别。
开发语言:C++
许可协议: BSD 2-Clause license
GitHub项目地址: https://github.com/BVLC/caffe
4. PredictionIO
PredictionIO 是面向开发人员和数据科学家的开源机器学习服务器。它支持事件采集、算法调度、评估,以及经由REST APIs的预测结果查询。使用者可以通过PredictionIO做一些预测,比如个性化推荐、发现内容等。PredictionIO 提供20个预设算法,开发者可以直接将它们运行于自己的数据上。几乎任何应用与PredictionIO集成都可以变得更“聪明”。其主要特点如下所示:
- 基于已有数据可预测用户行为;
- 使用者可选择你自己的机器学习算法;
- 无需担心可扩展性,扩展性好。
PredictionIO 基于 REST API(应用程序接口)标准,不过它还包含 Ruby、Python、Scala、Java 等编程语言的 SDK(软件开发工具包)。其开发语言是Scala语言,数据库方面使用的是MongoDB数据库,计算系统采用Hadoop系统架构。
开发语言:Scala
许可协议: Apache License 2.0
GitHub项目地址: https://github.com/PredictionIO/PredictionIO
5. Brain
Brain是 JavaScript 中的 神经网络库。以下例子说明使用Brain来近似 XOR 功能:
var net = new brain.NeuralNetwork();
net.train([{input: [0, 0], output: [0]},
{input: [0, 1], output: [1]},
{input: [1, 0], output: [1]},
{input: [1, 1], output: [0]}]);
var output = net.run([1, 0]); // [0.987]
当 brain 用于节点中,可使用npm安装:
npm install brain
当 brain 用于浏览器,下载最新的 brain.js 文件。训练计算代价比较昂贵,所以应该离线训练网络(或者在 Worker 上),并使用 toFunction() 或者 toJSON()选项,以便将预训练网络插入到网站中。
开发语言:JavaScript
GitHub项目地址: https://github.com/harthur/brain
6. Keras
Keras是极其精简并高度模块化的神经网络库,在TensorFlow 或 Theano 上都能够运行,是一个高度模块化的神经网络库,支持GPU和CPU运算。Keras可以说是Python版的Torch7,对于快速构建CNN模型非常方便,同时也包含了一些最新文献的算法,比如Batch Noramlize,文档教程也很全,在官网上作者都是直接给例子浅显易懂。Keras也支持保存训练好的参数,然后加载已经训练好的参数,进行继续训练。
Keras侧重于开发快速实验,用可能最少延迟实现从理念到结果的转变,即为做好一项研究的关键。
当需要如下要求的深度学习的库时,就可以考虑使用Keras:
Keras侧重于开发快速实验,用可能最少延迟实现从理念到结果的转变,即为做好一项研究的关键。
当需要如下要求的深度学习的库时,就可以考虑使用Keras:
- 考虑到简单快速的原型法(通过总体模块性、精简性以及可扩展性);
- 同时支持卷积网络和递归网络,以及两者之间的组合;
- 支持任意连接方案(包括多输入多输出训练);
- 可在CPU 和 GPU 上无缝运行。
Keras目前支持 Python 2.7-3.5。
开发语言:Python
GitHub项目地址:https://github.com/fchollet/keras
7. CNTK
CNTK(Computational Network Toolkit )是一个统一的深度学习工具包,该工具包通过一个有向图将神经网络描述为一系列计算步骤。在有向图中,叶节点表示输入值或网络参数,其他节点表示该节点输入之上的矩阵运算。
CNTK 使得实现和组合如前馈型神经网络DNN、卷积神经网络(CNN)和循环神经网络(RNNs/LSTMs)等流行模式变得非常容易。同时它实现了跨多GPU 和服务器自动分化和并行化的随机梯度下降(SGD,误差反向传播)学习。
下图将CNTK的处理速度(每秒处理的帧数)和其他四个知名的工具包做了比较了。配置采用的是四层全连接的神经网络(参见基准测试脚本)和一个大小是8192 的高效mini batch。在相同的硬件和相应的最新公共软件版本(2015.12.3前的版本)的基础上得到如下结果:
CNTK 使得实现和组合如前馈型神经网络DNN、卷积神经网络(CNN)和循环神经网络(RNNs/LSTMs)等流行模式变得非常容易。同时它实现了跨多GPU 和服务器自动分化和并行化的随机梯度下降(SGD,误差反向传播)学习。
下图将CNTK的处理速度(每秒处理的帧数)和其他四个知名的工具包做了比较了。配置采用的是四层全连接的神经网络(参见基准测试脚本)和一个大小是8192 的高效mini batch。在相同的硬件和相应的最新公共软件版本(2015.12.3前的版本)的基础上得到如下结果:
CNTK自2015年四月就已开源。
开发语言:C++
GitHub项目地址:https://github.com/Microsoft/CNTK
8. Convnetjs
ConvNetJS是利用Javascript实现的神经网络,同时还具有非常不错的基于浏览器的Demo。它最重要的用途是帮助深度学习初学者更快、更直观的理解算法。
它目前支持:
它目前支持:
- 常见的神经网络模块(全连接层,非线性);
- 分类(SVM/ SOFTMAX)和回归(L2)的成本函数;
- 指定和训练图像处理的卷积网络;
- 基于Deep Q Learning的实验强化学习模型。
一些在线示例:
- Convolutional Neural Network on MNIST digits
- Convolutional Neural Network on CIFAR-10
- Toy 2D data
- Toy 1D regression
- Training an Autoencoder on MNIST digits
- Deep Q Learning Reinforcement Learning demo +Image Regression ("Painting") +Comparison of SGD/Adagrad/Adadelta on MNIST 开发语言:Javascript 许可协议:MIT License GitHub项目地址:https://github.com/karpathy/convnetjs
9. Pattern
Pattern是Python的一个Web挖掘模块。拥有以下工具:
- 数据挖掘:网络服务(Google、Twitter、Wikipedia)、网络爬虫、HTML DOM解析;
- 自然语言处理:词性标注工具(Part-Of-Speech Tagger)、N元搜索(n-gram search)、情感分析(sentiment analysis)、WordNet;
- 机器学习:向量空间模型、聚类、分类(KNN、SVM、 Perceptron);
- 网络分析:图形中心性和可视化。
其文档完善,目前拥有50多个案例和350多个单元测试。 Pattern目前只支持Python 2.5+(尚不支持Python 3),该模块除了在Pattern.vector模块中使用LSA外没有其他任何外部要求,因此只需安装 NumPy (仅在Mac OS X上默认安装)。
开发语言:Python
许可协议:BSD license
GitHub项目地址:https://github.com/clips/pattern
10. NuPIC
NuPIC是一个实现了HTM学习算法的机器智能平台。HTM是一个关于新(大脑)皮质(Neocortex)的详细人工智能算法。HTM的核心是基于时间的连续学习算法,该算法可以存储和调用时间和空间两种模式。NuPIC可以适用于解决各类问题,尤其是异常检测和流数据源预测方面。
NuPIC Binaries文件目前可用于:
NuPIC Binaries文件目前可用于:
- Linux x86 64bit
- OS X 10.9
- OS X 10.10
- Windows 64bit
NuPIC 有自己的独特之处。许多机器学习算法无法适应新模式,而NuPIC的运作接近于人脑,当模式变化的时候,它会忘掉旧模式,记忆新模式。
开发语言:Python
GitHub项目地址:https://github.com/numenta/nupic
11. Theano
Theano是一个Python库,它允许使用者有效地定义、优化和评估涉及多维数组的数学表达式,同时支持GPUs和高效符号分化操作。Theano具有以下特点:
- 与NumPy紧密相关--在Theano的编译功能中使用了Numpy.ndarray ;
- 透明地使用GPU--执行数据密集型计算比CPU快了140多倍(针对Float32);
- 高效符号分化--Theano将函数的导数分为一个或多个不同的输入;
- 速度和稳定性的优化--即使输入的x非常小也可以得到log(1+x)正确结果;
- 动态生成 C代码--表达式计算更快;
- 广泛的单元测试和自我验证--多种错误类型的检测和判定。
自2007年起,Theano一直致力于大型密集型科学计算研究,但它目前也很被广泛应用在课堂之上( 如Montreal大学的深度学习/机器学习课程)。
开发语言:Python
GitHub项目地址:https://github.com/Theano/Theano
12. MXNet
MXNet是一个兼具效率和灵活性的深度学习框架。它允许使用者将符号编程和命令式编程相结合,以追求效率和生产力的最大化。其核心是动态依赖调度程序,该程序可以动态自动进行并行化符号和命令的操作。其中部署的图形优化层使得符号操作更快和内存利用率更高。该库轻量且便携带,并且可扩展到多个GPU和多台主机上。
主要特点:
主要特点:
- 其设计说明提供了有用的见解,可以被重新应用到其他DL项目中;
- 任意计算图的灵活配置;
- 整合了各种编程方法的优势最大限度地提高灵活性和效率;
- 轻量、高效的内存以及支持便携式的智能设备;
- 多GPU扩展和分布式的自动并行化设置;
- 支持Python、R、C++和 Julia;
- 对“云计算”友好,直接兼容S3、HDFS和Azure。
MXNet不仅仅是一个深度学习项目,它更是一个建立深度学习系统的蓝图、指导方针以及黑客们对深度学习系统独特见解的结合体。
开发语言:Jupyter Notebook
开源许可:Apache-2.0 license
GitHub项目地址:https://github.com/dmlc/mxnet
13. Vowpal Wabbit
Vowpal Wabbit是一个机器学习系统,该系统推动了如在线、散列、Allreduce、Learning2search、等方面机器学习前沿技术的发展。 其训练速度很快,在20亿条训练样本,每个训练样本大概100个非零特征的情况下:如果特征的总位数为一万时,训练时间为20分钟;特征总位数为1000万时,训练时间为2个小时。Vowpal Wabbit支持分类、 回归、矩阵分解和LDA。
当在Hadoop上运行Vowpal Wabbit时,有以下优化机制:
当在Hadoop上运行Vowpal Wabbit时,有以下优化机制:
- 懒惰初始化:在进行All Reduce之前,可将全部数据加载到内存中并进行缓存。即使某一节点出现了错误,也可以通过在另外一个节点上使用错误节点的数据(通过缓存来获取)来继续训练。
- Speculative Execution:在大规模集群当中,一两个很慢的Mapper会影响整个Job的性能。Speculative Execution的思想是当大部分节点的任务完成时,Hadoop可以将剩余节点上的任务拷贝到其他节点完成。
开发语言:C++
GitHub项目地址:https://github.com/JohnLangford/vowpal_wabbit
14. Ruby Warrior
通过设计了一个游戏使得Ruby语言和人工智能学习更加有乐趣和互动起来。
使用者扮演了一个勇士通过爬上一座高塔,到达顶层获取珍贵的红宝石(Ruby)。在每一层,需要写一个Ruby脚本指导战士打败敌人、营救俘虏、到达楼梯。使用者对每一层都有一些认识,但是你永远都不知道每层具体会发生什么情况。你必须给战士足够的人工智能,以便让其自行寻找应对的方式。
勇士的动作相关API:
使用者扮演了一个勇士通过爬上一座高塔,到达顶层获取珍贵的红宝石(Ruby)。在每一层,需要写一个Ruby脚本指导战士打败敌人、营救俘虏、到达楼梯。使用者对每一层都有一些认识,但是你永远都不知道每层具体会发生什么情况。你必须给战士足够的人工智能,以便让其自行寻找应对的方式。
勇士的动作相关API:
- Warrior.walk: 用来控制勇士的移动,默认方向是往前;
- warrior.feel:使用勇士来感知前方的情况,比如是空格,还是有怪物;
- Warrior.attack:让勇士对怪物进行攻击;
- Warrior.health:获取勇士当前的生命值;
- Warrior.rest:让勇士休息一回合,恢复最大生命值的10%。
勇士的感知API:
- Space.empty:感知前方是否是空格;
- Space.stairs:感知前方是否是楼梯;
- Space.enemy: 感知前方是否有怪物;
- Space.captive:感知前方是否有俘虏;
- Space.wall:感知前方是否是墙壁。
开发语言:Ruby
GitHub项目地址:https://github.com/ryanb/ruby-warrior
订阅:
博文 (Atom)